home *** CD-ROM | disk | FTP | other *** search
/ Atari Forever 4 / Atari Forever 4.zip / Atari Forever 4.iso / PD_THEMA / HARDDISK / HD_TEST / TRANSFER.LST < prev    next >
File List  |  1998-03-14  |  4KB  |  148 lines

  1. Reserve 30000                 ! Speicher fürs System freigeben
  2. Maxsecs%=200                  ! maximal 200 Sektoren lesen
  3. Drive%=2
  4. Do
  5.   A$="    TRANSFERTEST via    |      BIOS-Routinen|    ©1989 Claus Brod|       Laufwerk?"
  6.   Repeat
  7.     If Drive%>-1
  8.       Alert 0,A$,2,"⇦|"+Chr$(Drive%+65)+"|⇨",Erg%
  9.     Else
  10.       Alert 0,A$,2,"⇦|Exit|⇨",Erg%
  11.     Endif
  12.     If Erg%=1
  13.       Dec Drive%
  14.       If Drive%<-1
  15.         Inc Drive%
  16.       Endif
  17.     Endif
  18.     If Erg%=3
  19.       Inc Drive%
  20.       If Drive%>15
  21.         Drive%=-1
  22.       Endif
  23.     Endif
  24.   Until Erg%=2
  25.   Exit If Drive%=-1
  26.   ' Jetzt ist die Laufwerksnummer eingestellt
  27.   A$=Chr$(Drive%+65)+":\*.*"
  28.   Showm
  29.   Void Gemdos(&H4E,L:Varptr(A$),W:0)
  30.   ' dieser GEMDOS-Aufruf verhindert, daß ein eventueller Medienwechsel
  31.   ' vom folgenden BIOS-Aufruf weggeschnappt wird, bevor GEMDOS ihn bemerkt
  32.   ' Die Showm-Befehle verhindern, daß im Compilat bei Critical-Error-Boxen
  33.   ' ("Daten auf Disk ? defekt") die Maus verschwindet
  34.   Showm
  35.   Fehler%=Bios(7,Drive%)        ! eventuelle Wechselmeldung löschen, Parameter holen
  36.   If Fehler%
  37.     Bps%=Dpeek(Fehler%)         ! Sektorgröße in Bytes
  38.     @Malloc(-1)
  39.     If Pointer<Maxsecs%*Bps%+2
  40.       Alert 3,"    Zuwenig Speicher frei!    ",0,"Öha",Erg%
  41.     Else
  42.       @Malloc(Maxsecs%*Bps%+2)
  43.       Print
  44.       Print "1. TEST MIT GERADEN PUFFERADRESSEN"
  45.       Clr Rd%
  46.       Loops%=10
  47.       Showm
  48.       Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
  49.       If Fehler%
  50.         @Error(Fehler%)
  51.       Else
  52.         ' Laufwerk auf Lesezugriff vorbereiten (Kopf positionieren)
  53.         T1%=Timer
  54.         For T%=1 To Loops%
  55.           T0%=Timer
  56.           Fehler%=Bios(4,W:0,L:Pointer,W:Maxsecs%,W:1,W:Drive%)
  57.           If Fehler%
  58.             T%=Loops%+1
  59.           Endif
  60.           Add Rd%,Timer-T0%
  61.           Showm
  62.           Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
  63.         Next T%
  64.         T2%=Timer
  65.         If Fehler%=0
  66.           @Zeit(Rd%,Loops%,Maxsecs%)
  67.           Print "Mit Positionierung:"
  68.           @Zeit(T2%-T1%,Loops%,Maxsecs%)
  69.         Else
  70.           @Error(Fehler%)
  71.         Endif
  72.       Endif
  73.       Print
  74.       Print "2. TEST MIT UNGERADEN PUFFERADRESSEN"
  75.       Clr Rd%
  76.       Loops%=3
  77.       Showm
  78.       Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
  79.       ' Kopf positionieren
  80.       If Fehler%
  81.         @Error(Fehler%)
  82.       Else
  83.         T1%=Timer
  84.         For T%=1 To Loops%
  85.           T0%=Timer
  86.           Fehler%=Bios(4,W:0,L:Pointer+1,W:Maxsecs%,W:1,W:Drive%)
  87.           If Fehler%
  88.             T%=Loops%+1
  89.           Endif
  90.           Add Rd%,Timer-T0%
  91.           Showm
  92.           Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
  93.         Next T%
  94.         T2%=Timer
  95.         If Fehler%=0
  96.           @Zeit(Rd%,Loops%,Maxsecs%)
  97.           Print "Mit Positionierung:"
  98.           @Zeit(T2%-T1%,Loops%,Maxsecs%)
  99.         Else
  100.           @Error(Fehler%)
  101.         Endif
  102.       Endif
  103.       @Mfree(Pointer)
  104.     Endif
  105.   Else
  106.     @Error(0)
  107.   Endif
  108.   @Taste
  109.   Cls
  110. Loop
  111. '
  112. Procedure Zeit(Ticks%,Schleifen%,Secs%)
  113.   T=Ticks%/200
  114.   Print Using "###.##",T;
  115.   Print " Sekunden für ";Using "####.#",Schleifen%*Secs%/2;
  116.   Print " KB"
  117.   Kbrate=Schleifen%*Secs%*Bps%/(1024*T)
  118.   Print "Transferrate: ";Using "####.#",Kbrate;
  119.   Print " KByte/s = ";Using "#####.#",Kbrate*8;
  120.   Print " KBit/s."
  121.   Print
  122. Return
  123. '
  124. Procedure Error(Er%)
  125.   Alert 3,"    Fehler "+Str$(Er%)+" auf    |    Laufwerk "+Chr$(65+Drive%),0,"Auweh",Erg%
  126. Return
  127. '
  128. Procedure Malloc(Groesse)
  129.   Pointer=Gemdos(&H48,L:Groesse)
  130. Return
  131. Procedure Mfree(Addr)
  132.   Fehler%=Gemdos(&H49,L:Addr)
  133. Return
  134. '
  135. Procedure Taste
  136.   Local T%
  137.   Repeat
  138.     A$=Inkey$
  139.     If Timer-T%>90 And Timer-T%<110
  140.       Print At(35,25);String$(13,32);
  141.     Endif
  142.     If Timer-T%>200
  143.       Print At(35,25);"Taste drücken";
  144.       T%=Timer
  145.     Endif
  146.   Until A$<>""
  147. Return
  148.